package com.songjia.stream.test02;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.MessageChannel;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import com.songjia.stream.model.User;


@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringBootTest
public class MyTest02 {

	//***************************************** 注入绑定接口 *****************************************//
	@Autowired
	private SinkSender sinkSender;

	@Test
	public void sendMsg01() {
		// output方法注解绑定的是"input"通道
		sinkSender.output().send(MessageBuilder.withPayload("**************From SinkSender input**************").build());
		
		sinkSender.output2().send(MessageBuilder.withPayload("**************From SinkSender input2**************").build());
		
		sinkSender.output3().send(MessageBuilder.withPayload(new User("宋佳", 25)).build());

	}

	
	//***************************************** 直接注入消息通道 *****************************************//
	// 直接注入名为 “input”的消息通道
	@Autowired
	// 通过直接注入的方式注入通道，input Sink.INPUT
	private MessageChannel input;

	// 当有多个通道时，可通过名称指定
	@Autowired
	@Qualifier("input2")
	private MessageChannel input2;
	
	
	@Autowired
	@Qualifier("input3")
	private MessageChannel input3;
	
	

	@Test
	public void contextLoads2() {

		input.send(MessageBuilder.withPayload("#################From SinkSender input#################").build());// 发到input通道，有消费者

		input2.send(MessageBuilder.withPayload("#################From SinkSender input2#################").build());// 发到input2通道，有消费者
		
		input3.send(MessageBuilder.withPayload(new User("宋佳", 25)).build());// 发到input3通道，无消费者

	}

}
